package at.abraxas.amarino.plugins.orientation; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.SeekBar; import android.widget.Spinner; import android.widget.TextView; import android.widget.SeekBar.OnSeekBarChangeListener; import at.abraxas.amarino.AmarinoIntent; import at.abraxas.amarino.plugins.Constants; import at.abraxas.amarino.plugins.R; public class EditActivity extends Activity { static final String PREF_FREQUENCY = "at.abraxas.amarino.plugins.orientation.frequency"; static final String KEY_PLUGIN_ID = "at.abraxas.amarino.plugins.orientation.id"; static final String KEY_VISUALIZER = "at.abraxas.amarino.plugins.orientation.visualizer"; private static final String TAG = "Orientation EditActivity"; Spinner visualizer; TextView frequency; SeekBar frequencySB; Button saveBtn; Button discardBtn; int pluginId; private boolean cancelled = true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.orientation_edit); Intent intent = getIntent(); if (intent != null){ pluginId = intent.getIntExtra(AmarinoIntent.EXTRA_PLUGIN_ID, -1); // we need to know the ID Amarino has assigned to this plugin // in order to identify sent data PreferenceManager.getDefaultSharedPreferences(EditActivity.this) .edit() .putInt(KEY_PLUGIN_ID, pluginId) .commit(); } visualizer =(Spinner)findViewById(R.id.visualizer); // init as text visualizer, this is the most common one visualizer.setSelection(PreferenceManager.getDefaultSharedPreferences(this).getInt(KEY_VISUALIZER, 0)); frequencySB = (SeekBar)findViewById(R.id.seekBar); frequency = (TextView)findViewById(R.id.seekBar_value); saveBtn = (Button)findViewById(R.id.saveBtn); discardBtn = (Button)findViewById(R.id.discardBtn); int lastValue = PreferenceManager.getDefaultSharedPreferences(this).getInt(PREF_FREQUENCY, 50); frequencySB.setProgress(lastValue); int rate = EditActivity.getRate(lastValue); frequency.setText(getRateText(rate)); frequencySB.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { public void onStopTrackingTouch(SeekBar seekBar) {} public void onStartTrackingTouch(SeekBar seekBar) {} public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int rate = EditActivity.getRate(progress); frequency.setText(getRateText(rate)); } }); saveBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { PreferenceManager.getDefaultSharedPreferences(EditActivity.this) .edit() .putInt(PREF_FREQUENCY, frequencySB.getProgress()) .commit(); cancelled = false; finish(); } }); discardBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); } }); } @Override public void finish() { if (cancelled) { setResult(RESULT_CANCELED); } else { final Intent returnIntent = new Intent(); returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_NAME, getString(R.string.orientation_plugin_name)); returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_DESC, getString(R.string.orientation_plugin_desc)); returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_SERVICE_CLASS_NAME, "at.abraxas.amarino.plugins.orientation.BackgroundService"); returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_ID, pluginId); int selectedVisualizer = visualizer.getSelectedItemPosition(); PreferenceManager.getDefaultSharedPreferences(this).edit().putInt(KEY_VISUALIZER, selectedVisualizer).commit(); switch(selectedVisualizer){ case Constants.TEXT: returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_VISUALIZER, AmarinoIntent.VISUALIZER_TEXT); break; case Constants.GRAPH: returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_VISUALIZER, AmarinoIntent.VISUALIZER_GRAPH); break; case Constants.BARS: returnIntent.putExtra(AmarinoIntent.EXTRA_PLUGIN_VISUALIZER, AmarinoIntent.VISUALIZER_BARS); break; } returnIntent.putExtra(AmarinoIntent.EXTRA_VISUALIZER_MIN_VALUE, -180f); returnIntent.putExtra(AmarinoIntent.EXTRA_VISUALIZER_MAX_VALUE, 360f); setResult(RESULT_OK, returnIntent); } super.finish(); } private String getRateText(int rate){ String text = new String(); switch(rate){ case 8: text = getString(R.string.very_slow); break; case 4: text = getString(R.string.slow); break; case 2: text = getString(R.string.medium); break; case 1: text = getString(R.string.fast); break; case 0: text = getString(R.string.very_fast); break; } return text; } protected static int getRate(int frequency) { int rate = 0; if (frequency < 20) rate = 8; else if (frequency < 40) rate = 4; else if (frequency < 60) rate = 2; else if (frequency < 80) rate = 1; else rate = 0; return rate; } }